package com.fjh.common;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 公共的返回值对象
 * 我们后端给前端响应json 数据时,都使用它包装
 */
@Data
@AllArgsConstructor // 所有参数的构造器
@NoArgsConstructor  // 无参构造器
public class Result {

    /**
     * 状态码
     */
    private Integer code;

    /**
     * 响应的信息
     */
    private String msg;

    /**
     * 响应的数据
     */
    private Object data;

    /**
     * 操作成功,没有数据时
     *
     * @return Result
     */
    public static Result ok() {
        return ok(null);
    }

    /**
     * 操作成功,带数据过去
     *
     * @param data 需要携带的数据
     * @return
     */
    public static Result ok(Object data) {
        return new Result(CodeMsg.SUCCESS.code, CodeMsg.SUCCESS.msg, data);
    }

    /**
     * 操作失败的响应数据
     *
     * @param code 响应码
     * @param msg  提示信息
     * @return Result 对象
     */
    public static Result fail(Integer code, String msg) {
        Result result = new Result(code, msg, null);
        return result;
    }

    /**
     * 操作使用的响应数据
     *
     * @return
     */
    public static Result fail() {
        return fail(CodeMsg.FAIL.code, CodeMsg.FAIL.msg);
    }
}
